package com.neusoft.hifly.information.article.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.neusoft.hifly.information.article.entity.ArticleObj;

/**
 * Title: 文章资讯服务
 * <p>
 * Description: 文章 Dao
 * <p>
 * Copyright: 2019
 * <p>
 * Company: 东软汉枫
 *
 * @author lh_neu
 * @version 1.0.0
 */
@Mapper
public interface IArticleDao extends BaseMapper<ArticleObj> {
	/**
	 * 批量插入
	 *
	 * @param organCode
	 *            租户编码
	 * @param list
	 *            数据集
	 */
	void insertBatch(@Param("organCode") String organCode, @Param("list") List<ArticleObj> list);

	/**
	 * 删除对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param logicId
	 *            对象ID
	 */
	void deleteByLogicId(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("logicId") long logicId);

	/**
	 * 更新文章状态
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param logicId
	 *            对象ID
	 * @param status
	 *            文章状态
	 */
	void updateByStatus(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("logicId") long logicId, @Param("status") String status);

	/**
	 * 根据id查询对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param logicId
	 *            id
	 * @return 对象
	 */
	ArticleObj getByLogicId(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("logicId") long logicId);

	/**
	 * 统计栏目下发布的文章数量
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户ID
	 * @param columnLogicId
	 *            栏目逻辑ID
	 * @return 数量
	 */
	long countByColumnLogicId(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("columnLogicId") long columnLogicId);

	/**
	 * 统计所有
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户ID
	 * @return 数量
	 */
	int countAll(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId);

	/**
	 * 查询所有对象
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @return 对象集合
	 */
	List<ArticleObj> findAll(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId);

	/**
	 * 查询用户
	 *
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param map
	 *            参数
	 * @return 数量
	 */
	int countByOrgan(@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("map") Map<String, Object> map);

	/**
	 * 查询用户
	 *
	 * @param page
	 *            分页
	 * @param organCode
	 *            租户编码
	 * @param organLogicId
	 *            租户逻辑ID
	 * @param map
	 *            参数
	 * @return 用户
	 */
	List<ArticleObj> searchByOrgan(com.baomidou.mybatisplus.plugins.Page<ArticleObj> page,
			@Param("organCode") String organCode, @Param("organLogicId") long organLogicId,
			@Param("map") Map<String, Object> map);
}